﻿Ext.define('HIT.view.ReportAddWin', {// 报表编辑
	extend : 'Ext.form.Panel',
	alias : 'widget.reportaddpanel',
	id : 'report-add-grid',
	width : 700,
	height : 500,
	autoScroll : true,
	overlapHeader : false,
	preventHeader : true,

	initComponent : function() {
		var me = this;
		var conditionstore = new Ext.data.JsonStore({
			autoDestroy : true,
			proxy : { 
                type : 'ajax', 
                url : ctx + '/gettablefield',
                params :{},
                reader : {
                    type : 'json', 
                    totalProperty : '',
                    root : '' 
                } 
	        },
	        fields : ['value','value'], 
	        autoLoad : false 
	     });
		
		function checkFieldProperty(tablename, field, id, inputvalue) {
			if ((tablename == null || tablename == '') 
					|| (field == null || field == '') 
					|| (inputvalue == null || inputvalue == '')) {
				return;
			}
			/**
			 * 验证输入的值是否与字段属性匹配
			 * 1，获取当前字段的属性；
			 * 2，取得当前输入的值；
			 * 3，将值传到java中判断是否符合此字段数据类型。
			 */ 
			var islegal = false;
			
			Ext.Ajax.request({
				// 从controller返回的response中读取数据
				url : 'getFieldProperty',
				method : 'POST',
				params : {
					tablename : tablename,
					field : field,
					inputvalue : inputvalue
				},
				async : false,
				success : function(response) {
					s = response.responseText;
					
					json = Ext.JSON.decode(s);
					if (json.resultcode == '0') {
						islegal = json.islegal;
					}
				}
			});
			return islegal;
		}
		
		Ext.applyIf(me, {
			items : [
			{
				xtype : 'form',
				x : 15,
				y : 10,
				width : 629,
				id : 'report-all-info',
				items : [ {// 步骤1：选择表或视图名
					xtype : 'fieldset',
					x : 10,
					y : 10,
					height : 80,
					width : 585,
					layout : {
						type : 'absolute'
					},
					title : Share.T('步骤1：选择表或视图名'),
					items : [ {
						xtype : 'combobox',
						x : 10,
						y : ChangeSystem.Explore == 'IE8' ? 15 : 10,
						width : 400,
						labelWidth : 160,
						editable: false,
						fieldLabel : Share.T('请选择要创建的模板视图'),
						allowBlank : false,
                        msgTarget  : 'side',
						id : 'report-table',
						listeners:{
							change:function(){
								var t_name = Ext.getCmp('report-table').getValue();
								var store = Ext.getCmp('filter_field1').getStore();
								var table_field = Ext.getCmp('table_field').getStore();
								 store.on('beforeload', function(store) {
					         			Ext.apply(store.proxy.extraParams , {
					         				                                 t_name : t_name
					         				                                 });
				                 });
								 table_field.removeAll();
								 table_field.on('beforeload', function(store) {
					         			Ext.apply(store.proxy.extraParams , {
					         				                                 t_name : t_name
					         				                                 });
				                 });
				                store.load();
				                table_field.load();
				                Ext.getCmp('table_field').reset();
							}
						},
						store : new Ext.data.Store({
							proxy : {
								type : 'ajax',
								url : ctx + '/getreporttable',
								params : {},
								reader : {
									type : 'json',
									totalProperty : '',
									root : ''
								}
							},
							fields:['t_name','value'],
							autoLoad : false
						}),
						valueField   : 'value',
	                    displayField : 't_name'
					}]
				}, {// 步骤2：条件提示
					xtype : 'fieldset',
					x : 10,
					y : 20,
					height : 100,
					width : 585,
					layout : {
						type : 'absolute'
					},
					title : Share.T('步骤2：条件提示'),
					items : [ {
						xtype : 'textfield',
						x : 10,
						y : ChangeSystem.Explore == 'IE8' ? 10 : 5,
						id : 'report-name',
						width : 250,
						labelWidth : 80,
						allowBlank : false,
						blankText  : Share.T('模板名称不能为空'),
                        msgTarget  : 'side',
                        regex      : /^[A-Za-z0-9-_\u4e00-\u9fa5]+$/,
                        regexText  : Share.T('模板名称只能输入汉字，字母，下划线'),
						fieldLabel : Share.T('模板名称')
					},{
						xtype : 'label',
						x : 270,
						y : ChangeSystem.Explore == 'IE8' ? 13 : 8,
						text : Share.T('*模板名称不能包含特殊字符(&#%)'),
						style : 'font-width:10px;color:#909090;'
					},{
						xtype : 'textfield',
						x : 10,
						y : ChangeSystem.Explore == 'IE8' ? 45 : 35,
						id : 'report-describe',
						regex : /^[A-Za-z0-9_\u4e00-\u9fa5]+$/,
						regexText : Share.T('模板描述只能输入汉字，字母，下划线'),
						msgTarget:'side',
						width : 500,
						labelWidth : 80,
						fieldLabel : Share.T('模板描述')
					} ]
				}, {// 步骤3：制定过滤条件
					xtype : 'fieldset',
					x : 10,
					y : 20,
					width : 585,
					title : Share.T('步骤3：指定过滤条件'),
					items : [ {
						layout : "form",
						border : false,
						width:590,
						items : [ {
							layout : "absolute", 
							height:22,
							border : false,
							items : [ {
								xtype : 'label',
								text : Share.T('字段'),
								labelWidth : 180,
								height : 22,
								border : 1,
								style : {
								    textAlign : 'center',
								    padding : 3
								},
								width : 180
							}, {
								xtype : 'label',
								text : Share.T('条件'),
								labelWidth : 80,
								width : 80,
								height : 22,
								border : 1,
								style : {
								    textAlign : 'center',
								    padding : 3
								},
								x : 181
							}, {
								xtype : 'label',
								text : Share.T('值'),
								labelWidth : 130,
								width : 130,
								height : 22,
								border : 1,
								style : {
								    textAlign : 'center',
								    padding : 3
								},
								x : 262
							} ]
						}, {// 行2
							xtype : 'fieldset',
							id : 'filter_condition',
							border : false,
							items : [ {
								layout : "hbox", 
								border : false,
								items : [ {
									xtype : "combo",
									id : 'filter_field1',
									width : 180,
									editable: false,
									x : 0,
									msgTarget:'side',
									store : conditionstore,
									valueField : 'value',
				                    displayField : 'value',
				                    listeners : {
				                    	change : function(e) {
				                    		Ext.getCmp('filter_value' + e.id.substr(12, e.id.length)).focus();
				                    	}
				                    }
								}, {
									xtype : "combo",
									x : 181,
									width : 80,
									id : 'operator1',
									displayField : 'text',
									valueField : 'value',
									editable: false,
									msgTarget:'side',
									store: new Ext.data.JsonStore({
				    					proxy: { 
				        	                type: 'ajax', 
				        	                url : ctx + '/getComboDataNoOrder',
				        	                params:{},
				        	                reader: { 
				        	                    type: 'json', 
				        	                    totalProperty: '', 
				        	                    root: '' 
				        	                } 
				        	             }, 
				        	            fields:['text','value'], 
				        	            autoLoad:true 
							        }),
							        listeners : {
							        	beforerender:function(){
							        		this.store.removeAll();
							        		this.store.on('beforeload', function(store) {
							        			Ext.apply(store.proxy.extraParams , {
							        				type : 'reportadd'
							        			});
							        		});
							        		this.store.load();
							        	}
							        }
								}, {
									xtype : "textfield",
									id : 'filter_value1',
									x : 262,
									regex : /^[A-Za-z0-9--\u4e00-\u9fa5]+$/,
							        regexText : Share.T('过滤条件值只能输入数字，汉字，字母，下划线，中划线。'),
							        msgTarget : 'side',
									width : 130,
									listeners : {
										blur : function (e, evn, eOpts) {
											var id = e.id;
											var i = id.substr(12, id.length);
											
											var inputvalue = e.value;
											var tablename = Ext.getCmp('report-table').getValue();
											var field = Ext.getCmp('filter_field' + i).getValue();
											var islegal = checkFieldProperty(tablename, field, id, inputvalue);
											
											if (!islegal) {
												isCanSave = false;
												Ext.getCmp(id).markInvalid(Share.T('请输入合法值。'));
											} else {
												e.clearInvalid();
												isCanSave = true;
											}
										}
									}
								}, {
									xtype : 'button',
									id : 'filter_del1',
									width : 50,
									x : 408,
									text : Share.T('删除'),
									onClick : function() {
										Ext.getCmp('filter_del1').setVisible(false);
										Ext.getCmp('filter_value1').setVisible(false);
										Ext.getCmp('operator1').setVisible(false);
										Ext.getCmp('filter_field1').setVisible(false);
									}
								} ]
							},{
								xtype : 'button',
								id : 'addbtn',
								width : 50,
								text : Share.T('添加'),
								x : 390
							} ]
						} ]
					} ]
				}, 
				{// 步骤4：选择要显示的字段
					xtype : 'fieldset',
					x : 10,
					y : 20,
					height : 235,
					width : 585,
					id : 'table_field_fieldset',
					layout : {
						type : 'absolute'
					},
					title : Share.T('步骤4：选择要显示的字段'),
					items : [ {
						xtype : 'itemselector',
						id : 'table_field',
						anchor : '100%',
						imagePath : ctx + '/resources/extjs/ux/images/',
						x : 0,
						y : 10,
						height : 180,
						allowBlank : false,
						blankText  : Share.T('字段不能为空。'),
                        msgTarget  : 'side',
						name : 'table_field',
						autoScroll : true,
						width : 550,
						store : new Ext.data.JsonStore({
        					proxy: {
            	                type : 'ajax',
            	                url : ctx + '/gettablefield',
            	                params : {},
            	                reader : {
            	                    type : 'json',
            	                    totalProperty : '',
            	                    root : ''
            	                }
            	        },
            	        fields : ['value','text'], 
            	        autoLoad : true 
				        }),
						valueField : 'value',
						displayField : 'text',
						fromTitle : Share.T('可用字段'),
						toTitle : Share.T('选取字段')
					} ]
				},// 步骤4结束
				{// 步骤5：选择要授权的用户
					xtype : 'fieldset',
					x : 10,
					y : 20,
					height : 255,
					id : 'user_fieldset',
					width : 585,
					layout : {
						type : 'absolute'
					},
					title : Share.T('步骤5：选择要授权的用户'),
					items : [ {
						xtype : 'button',
						x : 463,
						id : 'getusergroup',
						name : 'getusergroup',
						width : 100,
						text : Share.T('请选择用户组')
					}, {
						xtype : 'itemselector',
						anchor : '100%',
						imagePath : ctx + '/resources/extjs/ux/images/',
						y : ChangeSystem.Explore == 'IE8' ? 40 : 30,
						height : 180,
						id : 'user',
						name : 'user',
						allowBlank : false,
						blankText  : Share.T('用户不能为空。'),
                        msgTarget  : 'side',
						autoScroll : true,
						width : 550,
						store : new Ext.data.JsonStore({
        					proxy: {
            	                type : 'ajax', 
            	                url : ctx + '/getuser',
            	                params : {},
            	                reader : { 
            	                    type : 'json',
            	                    totalProperty : '',
            	                    root : '' 
            	                } 
        					},
	            	        fields : ['text','value'], 
	            	        autoLoad : true 
				        }),
				        displayField : 'text',
						valueField : 'value',
						fromTitle : Share.T('可选的用户'),
						toTitle : Share.T('选取的用户')
					} ]
				},{
					xtype : 'fieldset',
					border : false
				} // 步骤5结束
				]
			}]
		});
		me.callParent(arguments);
	}
});